package cn.hsa.xxx.bookData.bo.impl;


import cn.hsa.xxx.bookData.bo.BookInventoryBO;
import cn.hsa.xxx.bookData.dao.BookInventoryDAO;
import cn.hsa.xxx.api.dto.BookInventoryDTO;
import cn.hsa.xxx.bookData.dto.BookInventoryDTOConverter;
import cn.hsa.xxx.bookData.entity.BookInventoryDO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

@Component
@Slf4j
public class BookInventoryBOImpl implements BookInventoryBO {

    @Resource
    BookInventoryDAO bookInventoryDAO;

    @Autowired
    BookInventoryDTOConverter bookInventoryDTOConverter;

    @Override
    public BookInventoryDTO add(BookInventoryDTO bookInventoryDTO) {
        BookInventoryDO bookInventoryDO = bookInventoryDTOConverter.convertToBookInventoryDO(bookInventoryDTO);
        bookInventoryDAO.insert(bookInventoryDO);
        return bookInventoryDTOConverter.convertToBookInventoryDTO(bookInventoryDO);
    }

    @Override
    public String delete(String id) {
        bookInventoryDAO.deleteById(id);
        return "删除成功";
    }

    @Override
    public BookInventoryDTO get(String id) {
        BookInventoryDO bookInventoryDO = bookInventoryDAO.selectById(id);
        BookInventoryDTO bookInventoryDTO = bookInventoryDTOConverter.convertToBookInventoryDTO(bookInventoryDO);
        return bookInventoryDTO;
    }

    @Override
    public String update(BookInventoryDTO bookInventoryDTO) {
        BookInventoryDO bookInventoryDO = bookInventoryDTOConverter.convertToBookInventoryDO(bookInventoryDTO);
        bookInventoryDAO.updateById(bookInventoryDO);
        return "删除成功";
    }

    @Override
    public List<BookInventoryDTO> getPage(int pageNo, int pageSize) {
        PageHelper.startPage(pageNo, pageSize);
        List<BookInventoryDO> bookInventoryDOList = bookInventoryDAO.selectList(null);

        PageInfo pageInfo = new PageInfo(bookInventoryDOList);
        long totalRecords = pageInfo.getTotal();
        long totalPages = pageInfo.getPages();

        List<BookInventoryDTO> bookInventoryDTOList = new ArrayList<>();
        for (BookInventoryDO bookInventoryDO : bookInventoryDOList) {
            bookInventoryDTOList.add(bookInventoryDTOConverter.convertToBookInventoryDTO(bookInventoryDO));

        }

        return bookInventoryDTOList;
    }

    @Override
    public BookInventoryDTO getByBookUuid(String id) {
        BookInventoryDO bookInventoryDO = bookInventoryDAO.selectByBookUuid(id);
        BookInventoryDTO bookInventoryDTO = bookInventoryDTOConverter.convertToBookInventoryDTO(bookInventoryDO);
        return bookInventoryDTO;
    }
}
